package reflect;

import reflect.annotations.AutoRunMethod;

import java.lang.reflect.Method;

/**
 * 获取注解上的参数值
 */
public class ReflectDemo11 {
    public static void main(String[] args) throws Exception {
        //需求:获取Person类中sayHi()方法上@AutoRunMethod注解的参数"value"的值
        Class cls = Class.forName("reflect.Person");
        Method method = cls.getMethod("sayHi");
        //严谨的判断，确保该方法有被该注解标注
        if(method.isAnnotationPresent(AutoRunMethod.class)){
            /*
                所有的反射对象都支持的方法:getAnnotation，获取当前反射对象表达的成员上指定的注解对象。
             */
            AutoRunMethod arm = method.getAnnotation(AutoRunMethod.class);
            //这里方法名是根据注解参数名决定的，如果参数叫"time"，这里就调用int value = arm.time();
            int value = arm.value();//获取该注解中名为"value"的参数的值
            System.out.println( value);
        }else{
            System.out.println(method.getName()+"方法没有被@AutoRunMethod注解标注");
        }
    }
}


